package main

import (
	"fmt"
)

// 定义一个接口，表示所有数字类型
type Numeric interface {
	// 确保所有实现此接口的类型可以进行相加
	Add(Numeric) Numeric
}

// 整数类型
type Integer int

// 实现整数类型的加法
func (i Integer) Add(other Numeric) Numeric {
	return i + other.(Integer)
}

// 浮点数类型
type Float float64

// 实现浮点数类型的加法
func (f Float) Add(other Numeric) Numeric {
	return f + other.(Float)
}

// 计算任意数字类型切片的和
func sum(nums []Numeric) Numeric {
	var total Numeric
	for _, num := range nums {
		if total == nil {
			total = num
		} else {
			total = total.Add(num)
		}
	}
	return total
}

func LoopKeyValue() {

	// 示例map，映射了一些字符串到整数的关系
	myMap := map[string]int{
		"a": 1,
		"b": 2,
		"c": 3,
	}

	// 获取所有的key
	var keys []string
	var values []int

	// 获取所有的value

	for key, value := range myMap {
		keys = append(keys, key)
		values = append(values, value)
	}
	// 输出所有的key
	fmt.Println("Keys:", keys)

	// 输出所有的value
	fmt.Println("Values:", values)

}
func main() {
	//intSlice := []Numeric{Integer(1), Integer(2), Integer(3)}
	//floatSlice := []Numeric{Float(1.1), Float(2.2), Float(3.3)}
	//fmt.Println(intSlice)
	//fmt.Println("Sum of integers:", sum(intSlice)) // 输出：Sum of integers: 6
	//fmt.Println("Sum of floats:", sum(floatSlice)) // 输出：Sum of floats: 6.6
	LoopKeyValue()
}
